#if !defined(AFX_BASESURFACE_H__617BEF55_4F9A_4B0B_87BA_F33916916D56__INCLUDED_)
#define AFX_BASESURFACE_H__617BEF55_4F9A_4B0B_87BA_F33916916D56__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// BaseSurface.h : header file
//

/////////////////////////////////////////////////////////////////////////////
// CBaseSurface window

class CBasePanel;
class BaseCoalMineUnit;
class BaseMonitoringUnit;

class CBaseSurface : public CWnd
{
// Construction
public:
	CBaseSurface(CBasePanel * pPanel);

// Attributes
protected:
  CBasePanel * m_pPanel;

// Operations
public:
  virtual bool Create(const CString& strWindowName, CWnd * pParentWnd);
  virtual void Paint(CDC& dc) = 0;
  virtual void UpdateDisplay();
  virtual void UpdateDefinitionDisplay(BaseCoalMineUnit * pCoalMineUnit) = 0;
  virtual void UpdateDataDisplay(BaseCoalMineUnit * pCoalMineUnit, BaseMonitoringUnit * pMonitoringUnit) = 0;
  virtual void ApplyOptions(DWORD dwOptionPagesMask) = 0;
  virtual void HandleMouseWheel(UINT nFlags, short zDelta, CPoint pt) {}
  virtual bool CanBeActivated() const {return true;}

  CBasePanel * GetpPanel() const {return m_pPanel;}

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CBaseSurface)
	protected:
	virtual void PostNcDestroy();
	//}}AFX_VIRTUAL

// Implementation
public:
	virtual ~CBaseSurface();

	// Generated message map functions
protected:
	//{{AFX_MSG(CBaseSurface)
	afx_msg void OnPaint();
	afx_msg BOOL OnEraseBkgnd(CDC* pDC);
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_BASESURFACE_H__617BEF55_4F9A_4B0B_87BA_F33916916D56__INCLUDED_)
